Peer-to-Peer (P2P) applications partition tasks among peers. Peers make a portion of their resources, such as processing power, storage or network bandwidth, available to other network participants. Peer-to-peer applications were popularized by file sharing systems, such as the Napster™ file-sharing system and the BitTorrent™ file-sharing system. In a peer-to-peer file sharing model, one or more users (referred to as “peers”) share a file with other users. Peers are said to form a peer-to-peer network of nodes.
Due to the distributed nature of P2P networks, there is typically no central information about the network participants. P2P file sharing networks, for example, typically do not require coordination by centralized servers to list the content that is available in the P2P network. A Distributed Hash Table (DHT) is often used in P2P networks to distribute the directory database among all participating clients. Kademlia is a popular DHT. See, for example, Petar Maymounkov and David Mazieres, “Kademlia: A Peer-to-Peer Information System Based on the XOR Metric,” International Workshop on Peer-To-Peer Systems (2002). Kademlia is currently implemented in several P2P clients, such as Ares™ (http://aresgalaxy.sourceforge.net and http://www.officialares.com), eMule (www.emule-project.net) and BitTorrent™ (www.bittorrent.com).
Peer-to-peer file sharing systems are typically primarily employed for personal use. In addition, a significant portion of the shared content is copyright protected. It has been found that many users of peer-to-peer file sharing systems stay connected only for the time required to download the desired content. Thus, the user population of these peer-to-peer systems is highly dynamic, with peers frequently joining and leaving the network. It is therefore challenging to obtain a complete list of the users that are connected to the P2P network at a given time.
A need therefore exists for methods and apparatus that identify the participants (for example, by their IP addresses) that are executing a P2P client on their computer at a given time.